package com.imooc.miaosha.dao;

import com.imooc.miaosha.domain.MiaoshaOrder;
import com.imooc.miaosha.domain.OrderInfo;

import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.SelectKey;

/**
 * @author liyuhui
 */

@Mapper
public interface OrderDao {

    /**
     * 根据用户Id和商品Id查询秒杀订单
     * @param userId
     * @param goodsId
     * @return
     */
    @Select(" select * from miaosha_order " +
            " where " +
            " user_id=#{userId} " +
            " and goods_id=#{goodsId}")
    MiaoshaOrder getMiaoshaOrderByUserIdGoodsId(@Param("userId")long userId, @Param("goodsId")long goodsId);


    /**
     * 新增订单
     * @param orderInfo
     * @return
     */
    @Insert(" insert into order_info(user_id, goods_id, goods_name, goods_count, goods_price, order_channel, status, create_date) " +
            " values(#{userId}, #{goodsId}, #{goodsName}, #{goodsCount}, #{goodsPrice}, #{orderChannel},#{status},#{createDate} ) ")
    @SelectKey(keyColumn="id", keyProperty="id", resultType=long.class, before=false, statement="select last_insert_id()")
    long insert(OrderInfo orderInfo);

    /**
     * 新增秒杀订单
     * @param miaoshaOrder
     * @return
     */
    @Insert(" insert into miaosha_order (user_id, goods_id, order_id) " +
            " values(#{userId}, #{goodsId}, #{orderId}) ")
    int insertMiaoshaOrder(MiaoshaOrder miaoshaOrder);

    /**
     * 获取订单
     * @param orderId
     * @return
     */
    @Select("select * from order_info where id = #{orderId}")
    OrderInfo getOrderById(@Param("orderId")long orderId);

    /**
     * 删除订单
     */
    @Delete("delete from order_info")
    void deleteOrders();

    /**
     * 删除秒杀订单
     */
    @Delete("delete from miaosha_order")
    void deleteMiaoshaOrders();

}
